home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / PInterfaces / Icons.p < prev    next >
Text File  |  1996-05-01  |  15KB  |  462 lines

  1. {
  2.      File:        Icons.p
  3.  
  4.      Contains:    Icon Utilities Interfaces.
  5.  
  6.      Version:    Technology:    System 8
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT Icons;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __ICONS__}
  28. {$SETC __ICONS__ := 1}
  29.  
  30. {$I+}
  31. {$SETC IconsIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __QUICKDRAW__}
  38. {$I Quickdraw.p}
  39. {$ENDC}
  40.  
  41. {$PUSH}
  42. {$ALIGN MAC68K}
  43. {$LibExport+}
  44.  
  45.  
  46. CONST
  47.                                                                 {  The following are icons for which there are both icon suites and SICNs.  }
  48.     kGenericDocumentIconResource = -4000;
  49.     kGenericStationeryIconResource = -3985;
  50.     kGenericEditionFileIconResource = -3989;
  51.     kGenericApplicationIconResource = -3996;
  52.     kGenericDeskAccessoryIconResource = -3991;
  53.     kGenericFolderIconResource    = -3999;
  54.     kPrivateFolderIconResource    = -3994;
  55.     kFloppyIconResource            = -3998;
  56.     kTrashIconResource            = -3993;
  57.     kGenericRAMDiskIconResource    = -3988;
  58.     kGenericCDROMIconResource    = -3987;                        {  The following are icons for which there are SICNs only.  }
  59.     kDesktopIconResource        = -3992;
  60.     kOpenFolderIconResource        = -3997;
  61.     kGenericHardDiskIconResource = -3995;
  62.     kGenericFileServerIconResource = -3972;
  63.     kGenericSuitcaseIconResource = -3970;
  64.     kGenericMoverObjectIconResource = -3969;                    {  The following are icons for which there are icon suites only.  }
  65.     kGenericPreferencesIconResource = -3971;
  66.     kGenericQueryDocumentIconResource = -16506;
  67.     kGenericExtensionIconResource = -16415;
  68.     kSystemFolderIconResource    = -3983;
  69.     kAppleMenuFolderIconResource = -3982;
  70.  
  71.                                                                 {  Obsolete. Use named constants defined above.  }
  72.     genericDocumentIconResource    = -4000;
  73.     genericStationeryIconResource = -3985;
  74.     genericEditionFileIconResource = -3989;
  75.     genericApplicationIconResource = -3996;
  76.     genericDeskAccessoryIconResource = -3991;
  77.     genericFolderIconResource    = -3999;
  78.     privateFolderIconResource    = -3994;
  79.     floppyIconResource            = -3998;
  80.     trashIconResource            = -3994;
  81.     genericRAMDiskIconResource    = -3988;
  82.     genericCDROMIconResource    = -3987;
  83.     desktopIconResource            = -3992;
  84.     openFolderIconResource        = -3997;
  85.     genericHardDiskIconResource    = -3995;
  86.     genericFileServerIconResource = -3972;
  87.     genericSuitcaseIconResource    = -3970;
  88.     genericMoverObjectIconResource = -3969;
  89.     genericPreferencesIconResource = -3971;
  90.     genericQueryDocumentIconResource = -16506;
  91.     genericExtensionIconResource = -16415;
  92.     systemFolderIconResource    = -3983;
  93.     appleMenuFolderIconResource    = -3982;
  94.  
  95.     kStartupFolderIconResource    = -3981;
  96.     kOwnedFolderIconResource    = -3980;
  97.     kDropFolderIconResource        = -3979;
  98.     kSharedFolderIconResource    = -3978;
  99.     kMountedFolderIconResource    = -3977;
  100.     kControlPanelFolderIconResource = -3976;
  101.     kPrintMonitorFolderIconResource = -3975;
  102.     kPreferencesFolderIconResource = -3974;
  103.     kExtensionsFolderIconResource = -3973;
  104.     kFontsFolderIconResource    = -3968;
  105.     kFullTrashIconResource        = -3984;
  106.  
  107.                                                                 {  Obsolete. Use named constants defined above.  }
  108.     startupFolderIconResource    = -3981;
  109.     ownedFolderIconResource        = -3980;
  110.     dropFolderIconResource        = -3979;
  111.     sharedFolderIconResource    = -3978;
  112.     mountedFolderIconResource    = -3977;
  113.     controlPanelFolderIconResource = -3976;
  114.     printMonitorFolderIconResource = -3975;
  115.     preferencesFolderIconResource = -3974;
  116.     extensionsFolderIconResource = -3973;
  117.     fontsFolderIconResource        = -3968;
  118.     fullTrashIconResource        = -3984;
  119.  
  120.     kLarge1BitMask                = 'ICN#';
  121.     kLarge4BitData                = 'icl4';
  122.     kLarge8BitData                = 'icl8';
  123.     kSmall1BitMask                = 'ics#';
  124.     kSmall4BitData                = 'ics4';
  125.     kSmall8BitData                = 'ics8';
  126.     kMini1BitMask                = 'icm#';
  127.     kMini4BitData                = 'icm4';
  128.     kMini8BitData                = 'icm8';
  129.  
  130.                                                                 {  Obsolete. Use names defined above.  }
  131.     large1BitMask                = 'ICN#';
  132.     large4BitData                = 'icl4';
  133.     large8BitData                = 'icl8';
  134.     small1BitMask                = 'ics#';
  135.     small4BitData                = 'ics4';
  136.     small8BitData                = 'ics8';
  137.     mini1BitMask                = 'icm#';
  138.     mini4BitData                = 'icm4';
  139.     mini8BitData                = 'icm8';
  140.  
  141. {   alignment type values  }
  142.     kAlignNone                    = $00;
  143.     kAlignVerticalCenter        = $01;
  144.     kAlignTop                    = $02;
  145.     kAlignBottom                = $03;
  146.     kAlignHorizontalCenter        = $04;
  147.     kAlignAbsoluteCenter        = $05;
  148.     kAlignCenterTop                = $06;
  149.     kAlignCenterBottom            = $07;
  150.     kAlignLeft                    = $08;
  151.     kAlignCenterLeft            = $09;
  152.     kAlignTopLeft                = $0A;
  153.     kAlignBottomLeft            = $0B;
  154.     kAlignRight                    = $0C;
  155.     kAlignCenterRight            = $0D;
  156.     kAlignTopRight                = $0E;
  157.     kAlignBottomRight            = $0F;
  158.  
  159.                                                                 {  Obsolete. Use names defined above.  }
  160.     atNone                        = $00;
  161.     atVerticalCenter            = $01;
  162.     atTop                        = $02;
  163.     atBottom                    = $03;
  164.     atHorizontalCenter            = $04;
  165.     atAbsoluteCenter            = $05;
  166.     atCenterTop                    = $06;
  167.     atCenterBottom                = $07;
  168.     atLeft                        = $08;
  169.     atCenterLeft                = $09;
  170.     atTopLeft                    = $0A;
  171.     atBottomLeft                = $0B;
  172.     atRight                        = $0C;
  173.     atCenterRight                = $0D;
  174.     atTopRight                    = $0E;
  175.     atBottomRight                = $0F;
  176.  
  177.  
  178. TYPE
  179.     IconAlignmentType                    = SInt16;
  180. {   transform type values   }
  181.  
  182. CONST
  183.     kTransformNone                = $00;
  184.     kTransformDisabled            = $01;
  185.     kTransformOffline            = $02;
  186.     kTransformOpen                = $03;
  187.     kTransformLabel1            = $0100;
  188.     kTransformLabel2            = $0200;
  189.     kTransformLabel3            = $0300;
  190.     kTransformLabel4            = $0400;
  191.     kTransformLabel5            = $0500;
  192.     kTransformLabel6            = $0600;
  193.     kTransformLabel7            = $0700;
  194.     kTransformSelected            = $4000;
  195.     kTransformSelectedDisabled    = $4001;
  196.     kTransformSelectedOffline    = $4002;
  197.     kTransformSelectedOpen        = $4003;
  198.  
  199.                                                                 {  Obsolete. Use names defined above.  }
  200.     ttNone                        = $00;
  201.     ttDisabled                    = $01;
  202.     ttOffline                    = $02;
  203.     ttOpen                        = $03;
  204.     ttLabel1                    = $0100;
  205.     ttLabel2                    = $0200;
  206.     ttLabel3                    = $0300;
  207.     ttLabel4                    = $0400;
  208.     ttLabel5                    = $0500;
  209.     ttLabel6                    = $0600;
  210.     ttLabel7                    = $0700;
  211.     ttSelected                    = $4000;
  212.     ttSelectedDisabled            = $4001;
  213.     ttSelectedOffline            = $4002;
  214.     ttSelectedOpen                = $4003;
  215.  
  216.  
  217. TYPE
  218.     IconTransformType                    = SInt16;
  219. {   Selector mask values   }
  220.  
  221. CONST
  222.     kSelectorLarge1Bit            = $00000001;
  223.     kSelectorLarge4Bit            = $00000002;
  224.     kSelectorLarge8Bit            = $00000004;
  225.     kSelectorSmall1Bit            = $00000100;
  226.     kSelectorSmall4Bit            = $00000200;
  227.     kSelectorSmall8Bit            = $00000400;
  228.     kSelectorMini1Bit            = $00010000;
  229.     kSelectorMini4Bit            = $00020000;
  230.     kSelectorMini8Bit            = $00040000;
  231.     kSelectorAllLargeData        = $000000FF;
  232.     kSelectorAllSmallData        = $0000FF00;
  233.     kSelectorAllMiniData        = $00FF0000;
  234.     kSelectorAll1BitData        = $00010101;
  235.     kSelectorAll4BitData        = $00020202;
  236.     kSelectorAll8BitData        = $00040404;
  237.     kSelectorAllAvailableData    = $FFFFFFFF;
  238.  
  239.                                                                 {  Obsolete. Use names defined above.  }
  240.     svLarge1Bit                    = $00000001;
  241.     svLarge4Bit                    = $00000002;
  242.     svLarge8Bit                    = $00000004;
  243.     svSmall1Bit                    = $00000100;
  244.     svSmall4Bit                    = $00000200;
  245.     svSmall8Bit                    = $00000400;
  246.     svMini1Bit                    = $00010000;
  247.     svMini4Bit                    = $00020000;
  248.     svMini8Bit                    = $00040000;
  249.     svAllLargeData                = $000000FF;
  250.     svAllSmallData                = $0000FF00;
  251.     svAllMiniData                = $00FF0000;
  252.     svAll1BitData                = $00010101;
  253.     svAll4BitData                = $00020202;
  254.     svAll8BitData                = $00040404;
  255.     svAllAvailableData            = $FFFFFFFF;
  256.  
  257.  
  258. TYPE
  259.     IconSelectorValue                    = UInt32;
  260. {$IFC FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE }
  261.     IconActionProcPtr = ProcPtr;  { FUNCTION IconAction(theType: ResType; VAR theIcon: Handle; yourDataPtr: UNIV Ptr): OSErr; }
  262.  
  263.     IconActionUPP = UniversalProcPtr;
  264.  
  265. CONST
  266.     uppIconActionProcInfo = $00000FE0;
  267.  
  268. FUNCTION NewIconActionProc(userRoutine: IconActionProcPtr): IconActionUPP;
  269.     {$IFC NOT GENERATINGCFM }
  270.     INLINE $2E9F;
  271.     {$ENDC}
  272.  
  273. FUNCTION CallIconActionProc(theType: ResType; VAR theIcon: Handle; yourDataPtr: UNIV Ptr; userRoutine: IconActionUPP): OSErr;
  274.     {$IFC NOT GENERATINGCFM}
  275.     INLINE $205F, $4E90;
  276.     {$ENDC}
  277.  
  278. TYPE
  279.     IconAction                            = IconActionProcPtr;
  280.     IconGetterProcPtr = ProcPtr;  { FUNCTION IconGetter(theType: ResType; yourDataPtr: UNIV Ptr): Handle; }
  281.  
  282.     IconGetterUPP = UniversalProcPtr;
  283.  
  284. CONST
  285.     uppIconGetterProcInfo = $000003F0;
  286.  
  287. FUNCTION NewIconGetterProc(userRoutine: IconGetterProcPtr): IconGetterUPP;
  288.     {$IFC NOT GENERATINGCFM }
  289.     INLINE $2E9F;
  290.     {$ENDC}
  291.  
  292. FUNCTION CallIconGetterProc(theType: ResType; yourDataPtr: UNIV Ptr; userRoutine: IconGetterUPP): Handle;
  293.     {$IFC NOT GENERATINGCFM}
  294.     INLINE $205F, $4E90;
  295.     {$ENDC}
  296.  
  297. TYPE
  298.     IconGetter                            = IconGetterProcPtr;
  299. {$IFC NOT OLDROUTINELOCATIONS }
  300.     CIconPtr = ^CIcon;
  301.     CIcon = RECORD
  302.         iconPMap:                PixMap;                                    { the icon's pixMap }
  303.         iconMask:                BitMap;                                    { the icon's mask }
  304.         iconBMap:                BitMap;                                    { the icon's bitMap }
  305.         iconData:                Handle;                                    { the icon's data }
  306.         iconMaskData:            ARRAY [0..0] OF SInt16;                    { icon's mask and BitMap data }
  307.     END;
  308.  
  309.     CIconHandle                            = ^CIconPtr;
  310. FUNCTION GetCIcon(iconID: SInt16): CIconHandle;
  311.     {$IFC NOT GENERATINGCFM}
  312.     INLINE $AA1E;
  313.     {$ENDC}
  314. PROCEDURE PlotCIcon({CONST}VAR theRect: Rect; theIcon: CIconHandle);
  315.     {$IFC NOT GENERATINGCFM}
  316.     INLINE $AA1F;
  317.     {$ENDC}
  318. PROCEDURE DisposeCIcon(theIcon: CIconHandle);
  319.     {$IFC NOT GENERATINGCFM}
  320.     INLINE $AA25;
  321.     {$ENDC}
  322. {$ENDC}
  323. FUNCTION GetIcon(iconID: SInt16): Handle;
  324.     {$IFC NOT GENERATINGCFM}
  325.     INLINE $A9BB;
  326.     {$ENDC}
  327. PROCEDURE PlotIcon({CONST}VAR theRect: Rect; theIcon: Handle);
  328.     {$IFC NOT GENERATINGCFM}
  329.     INLINE $A94B;
  330.     {$ENDC}
  331. FUNCTION PlotIconID({CONST}VAR theRect: Rect; align: IconAlignmentType; transform: IconTransformType; theResID: SInt16): OSErr;
  332.     {$IFC NOT GENERATINGCFM}
  333.     INLINE $303C, $0500, $ABC9;
  334.     {$ENDC}
  335. FUNCTION NewIconSuite(VAR theIconSuite: Handle): OSErr;
  336.     {$IFC NOT GENERATINGCFM}
  337.     INLINE $303C, $0207, $ABC9;
  338.     {$ENDC}
  339. FUNCTION AddIconToSuite(theIconData: Handle; theSuite: Handle; theType: ResType): OSErr;
  340.     {$IFC NOT GENERATINGCFM}
  341.     INLINE $303C, $0608, $ABC9;
  342.     {$ENDC}
  343. FUNCTION GetIconFromSuite(VAR theIconData: Handle; theSuite: Handle; theType: ResType): OSErr;
  344.     {$IFC NOT GENERATINGCFM}
  345.     INLINE $303C, $0609, $ABC9;
  346.     {$ENDC}
  347. FUNCTION ForEachIconDo(theSuite: Handle; selector: IconSelectorValue; action: IconActionUPP; yourDataPtr: UNIV Ptr): OSErr;
  348.     {$IFC NOT GENERATINGCFM}
  349.     INLINE $303C, $080A, $ABC9;
  350.     {$ENDC}
  351. FUNCTION GetIconSuite(VAR theIconSuite: Handle; theResID: SInt16; selector: IconSelectorValue): OSErr;
  352.     {$IFC NOT GENERATINGCFM}
  353.     INLINE $303C, $0501, $ABC9;
  354.     {$ENDC}
  355. FUNCTION DisposeIconSuite(theIconSuite: Handle; disposeData: BOOLEAN): OSErr;
  356.     {$IFC NOT GENERATINGCFM}
  357.     INLINE $303C, $0302, $ABC9;
  358.     {$ENDC}
  359. FUNCTION PlotIconSuite({CONST}VAR theRect: Rect; align: IconAlignmentType; transform: IconTransformType; theIconSuite: Handle): OSErr;
  360.     {$IFC NOT GENERATINGCFM}
  361.     INLINE $303C, $0603, $ABC9;
  362.     {$ENDC}
  363. FUNCTION MakeIconCache(VAR theHandle: Handle; makeIcon: IconGetterUPP; yourDataPtr: UNIV Ptr): OSErr;
  364.     {$IFC NOT GENERATINGCFM}
  365.     INLINE $303C, $0604, $ABC9;
  366.     {$ENDC}
  367. FUNCTION LoadIconCache({CONST}VAR theRect: Rect; align: IconAlignmentType; transform: IconTransformType; theIconCache: Handle): OSErr;
  368.     {$IFC NOT GENERATINGCFM}
  369.     INLINE $303C, $0606, $ABC9;
  370.     {$ENDC}
  371. FUNCTION PlotIconMethod({CONST}VAR theRect: Rect; align: IconAlignmentType; transform: IconTransformType; theMethod: IconGetterUPP; yourDataPtr: UNIV Ptr): OSErr;
  372.     {$IFC NOT GENERATINGCFM}
  373.     INLINE $303C, $0805, $ABC9;
  374.     {$ENDC}
  375. FUNCTION GetLabel(labelNumber: SInt16; VAR labelColor: RGBColor; VAR labelString: Str255): OSErr;
  376.     {$IFC NOT GENERATINGCFM}
  377.     INLINE $303C, $050B, $ABC9;
  378.     {$ENDC}
  379. FUNCTION PtInIconID(testPt: Point; {CONST}VAR iconRect: Rect; align: IconAlignmentType; iconID: SInt16): BOOLEAN;
  380.     {$IFC NOT GENERATINGCFM}
  381.     INLINE $303C, $060D, $ABC9;
  382.     {$ENDC}
  383. FUNCTION PtInIconSuite(testPt: Point; {CONST}VAR iconRect: Rect; align: IconAlignmentType; theIconSuite: Handle): BOOLEAN;
  384.     {$IFC NOT GENERATINGCFM}
  385.     INLINE $303C, $070E, $ABC9;
  386.     {$ENDC}
  387. FUNCTION PtInIconMethod(testPt: Point; {CONST}VAR iconRect: Rect; align: IconAlignmentType; theMethod: IconGetterUPP; yourDataPtr: UNIV Ptr): BOOLEAN;
  388.     {$IFC NOT GENERATINGCFM}
  389.     INLINE $303C, $090F, $ABC9;
  390.     {$ENDC}
  391. FUNCTION RectInIconID({CONST}VAR testRect: Rect; {CONST}VAR iconRect: Rect; align: IconAlignmentType; iconID: SInt16): BOOLEAN;
  392.     {$IFC NOT GENERATINGCFM}
  393.     INLINE $303C, $0610, $ABC9;
  394.     {$ENDC}
  395. FUNCTION RectInIconSuite({CONST}VAR testRect: Rect; {CONST}VAR iconRect: Rect; align: IconAlignmentType; theIconSuite: Handle): BOOLEAN;
  396.     {$IFC NOT GENERATINGCFM}
  397.     INLINE $303C, $0711, $ABC9;
  398.     {$ENDC}
  399. FUNCTION RectInIconMethod({CONST}VAR testRect: Rect; {CONST}VAR iconRect: Rect; align: IconAlignmentType; theMethod: IconGetterUPP; yourDataPtr: UNIV Ptr): BOOLEAN;
  400.     {$IFC NOT GENERATINGCFM}
  401.     INLINE $303C, $0912, $ABC9;
  402.     {$ENDC}
  403. FUNCTION IconIDToRgn(theRgn: RgnHandle; {CONST}VAR iconRect: Rect; align: IconAlignmentType; iconID: SInt16): OSErr;
  404.     {$IFC NOT GENERATINGCFM}
  405.     INLINE $303C, $0613, $ABC9;
  406.     {$ENDC}
  407. FUNCTION IconSuiteToRgn(theRgn: RgnHandle; {CONST}VAR iconRect: Rect; align: IconAlignmentType; theIconSuite: Handle): OSErr;
  408.     {$IFC NOT GENERATINGCFM}
  409.     INLINE $303C, $0714, $ABC9;
  410.     {$ENDC}
  411. FUNCTION IconMethodToRgn(theRgn: RgnHandle; {CONST}VAR iconRect: Rect; align: IconAlignmentType; theMethod: IconGetterUPP; yourDataPtr: UNIV Ptr): OSErr;
  412.     {$IFC NOT GENERATINGCFM}
  413.     INLINE $303C, $0915, $ABC9;
  414.     {$ENDC}
  415. FUNCTION SetSuiteLabel(theSuite: Handle; theLabel: SInt16): OSErr;
  416.     {$IFC NOT GENERATINGCFM}
  417.     INLINE $303C, $0316, $ABC9;
  418.     {$ENDC}
  419. FUNCTION GetSuiteLabel(theSuite: Handle): SInt16;
  420.     {$IFC NOT GENERATINGCFM}
  421.     INLINE $303C, $0217, $ABC9;
  422.     {$ENDC}
  423. FUNCTION GetIconCacheData(theCache: Handle; VAR theData: UNIV Ptr): OSErr;
  424.     {$IFC NOT GENERATINGCFM}
  425.     INLINE $303C, $0419, $ABC9;
  426.     {$ENDC}
  427. FUNCTION SetIconCacheData(theCache: Handle; theData: UNIV Ptr): OSErr;
  428.     {$IFC NOT GENERATINGCFM}
  429.     INLINE $303C, $041A, $ABC9;
  430.     {$ENDC}
  431. FUNCTION GetIconCacheProc(theCache: Handle; VAR theProc: IconGetterUPP): OSErr;
  432.     {$IFC NOT GENERATINGCFM}
  433.     INLINE $303C, $041B, $ABC9;
  434.     {$ENDC}
  435. FUNCTION SetIconCacheProc(theCache: Handle; theProc: IconGetterUPP): OSErr;
  436.     {$IFC NOT GENERATINGCFM}
  437.     INLINE $303C, $041C, $ABC9;
  438.     {$ENDC}
  439. FUNCTION PlotIconHandle({CONST}VAR theRect: Rect; align: IconAlignmentType; transform: IconTransformType; theIcon: Handle): OSErr;
  440.     {$IFC NOT GENERATINGCFM}
  441.     INLINE $303C, $061D, $ABC9;
  442.     {$ENDC}
  443. FUNCTION PlotSICNHandle({CONST}VAR theRect: Rect; align: IconAlignmentType; transform: IconTransformType; theSICN: Handle): OSErr;
  444.     {$IFC NOT GENERATINGCFM}
  445.     INLINE $303C, $061E, $ABC9;
  446.     {$ENDC}
  447. FUNCTION PlotCIconHandle({CONST}VAR theRect: Rect; align: IconAlignmentType; transform: IconTransformType; theCIcon: CIconHandle): OSErr;
  448.     {$IFC NOT GENERATINGCFM}
  449.     INLINE $303C, $061F, $ABC9;
  450.     {$ENDC}
  451. {$ENDC}
  452. {$ALIGN RESET}
  453. {$POP}
  454.  
  455. {$SETC UsingIncludes := IconsIncludes}
  456.  
  457. {$ENDC} {__ICONS__}
  458.  
  459. {$IFC NOT UsingIncludes}
  460.  END.
  461. {$ENDC}
  462.